/**
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. <br/>
 * 描述: TODO <br/>
 *
 * @author framework generator
 * @date 2022年02月15日
 * @version 2.0
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.mapper;

import com.icinfo.cloud.provider.punish.api.vo.CasePartyInfoShareVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CasePartiesRecordQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CasePartiesRecordSingleQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CasePartiesPersonInfo;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CasePartiesRecord;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CasePartiesInfoVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CasePartiesRecordVo;
import com.icinfo.framework.mybatis.mapper.common.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 描述: 案件当事人表-TRJ case_parties_info 对应的Mapper接口.<br>
 *
 * @author framework generator
 * @date 2022年02月15日
 */
public interface CasePartiesRecordMapper extends Mapper<CasePartiesRecord> {

    /**
     * 【V2.0.0】描述：获取案件当事人信息列表
     *
     * @param queryDto {@link CasePartiesRecordQueryDto}
     * @return {@link List < CasePartiesInfoVo >} 案件当事人信息列表
     * @author xiangyuyu
     * @date 2022-05-23 11:25
     */
    List<CasePartiesInfoVo> selectCasePartiesInfoList(@Param("queryDto") CasePartiesRecordQueryDto queryDto);

    /**
     * 【V2.0.0】描述：获取案件当事人信息列表
     *
     * @param queryDto {@link CasePartiesRecordQueryDto}
     * @return {@link List < CasePartiesInfoVo >} 案件当事人信息列表
     * @author xiangyuyu
     * @date 2022-05-23 11:25
     */
    List<CasePartiesInfoVo> selectCasePartiesInfoListForAdditional(@Param("queryDto") CasePartiesRecordQueryDto queryDto);

    /**
     * 【V2.0.0】根据当事人类别、证件号和案件id查询当事人记录
     *
     * @return {@link CasePartiesPersonInfo }
     * @author shishengyao
     * @date 2022/05/18
     */
    CasePartiesRecord selectCasePartiesRecordByCaseIdAndCertNo(CasePartiesRecordSingleQueryDto queryDto);

    /**
     * 【V1.3.2】描述：根据案件Id查询当事人信息
     *
     * @param caseId 用例id
     * @return {@link List<CasePartyInfoShareVo> }
     * @author shishengyao
     * @date 2022/07/18
     */
    List<CasePartyInfoShareVo> selectCasePartiesRecordByCaseId(@Param("caseId") String caseId);

    /**
     * 描述：补录id删除
     * 【1.9.4】描述：根据案件id集合查询当事人信息
     *
     * @param caseIds {@link Set <String>}
     * @return {@link List<CasePartiesRecordVo>}
     * @author cds
     * @date 2022/12/9
     * @version 1.9.4
     */
    List<CasePartiesInfoVo> listCasePartiesRecordByCaseIds(@Param("caseIds") Set<String> caseIds);

    /**
     * @param map
     * @return
     * @author wangfawei
     * @date 2022/12/08
     */
    int deleteAllByCaseId(Map map);
    /**
     * 描述：根据身份证查询当前用户信息
     * @param queryDto
     * @return
     * @author wangfawei
     * @date 2022/12/08
     */
    CasePartiesRecord selectCasePartiesRecordByCertNo(CasePartiesRecordSingleQueryDto queryDto);

    /**
     * 描述：查询被删除的当事人
     *
     * @param partyIds 方id
     * @return {@link List<String> }
     * @author shishengyao
     * @date 2023/03/22
     */
    List<String> selectDeletePartyIds(@Param("partyIds") List<String> partyIds,@Param("caseId") String caseId);
}
